package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentDaoFactory;

//业务员类
public class StudentService {
    //发现问题:当业务员要切换dao提供服务时,需要该Service里的代码,service和dao关系
    //过于紧密(耦合性太强)
    //解决方案,通过多态语法和工厂模式来解藕
    //private OtherStudentDao dao = new OtherStudentDao();
    private BaseStudentDao dao = StudentDaoFactory.getStudentDao();
    //业务员类中的添加学生功能
    public boolean addStudent(Student stu) {
        //指挥库管执行添加学生
        return dao.addStudnet(stu);
    }
    //业务员类的查看学生功能
    public Student[] fingAllStudent() {
        //指挥库管查询学生
        Student[] stus = dao.findAllStudent();
        /*期望,如果系统中没有数据,
        当前方法返回null
        如果系统中至少有一个数据,当前方法返回stus
        */
 /*
     这块查询信息,大致两种情况
     有数据,没数据
      */
        //通过标记为思想,看看业务员返回的数组有没有有效的学生信息
        //假设返回的数组中没有学生信息
        boolean flag = false;
        for (int i = 0; i < stus.length; i++) {
            if (stus[i] != null) {
                //只要有一个索引位置不为null,说明系统中有数据,修改标记为true
                flag = true;
            }
        }
        if (flag) {
            //有数据,返回数组地址
            return stus;
        } else {
            //没有数据,返回null
            return null;
        }
    }
//业务员类中的删除学生功能
    public boolean deleteStudent(String deleteId) {
        //指挥库管删除学生
        return dao.deleteStudent(deleteId);
    }
//业务员类中的修改学生功能
    public boolean updateStudent(String updateId, Student newStu) {
        //指挥库管修改学生
        return dao.updateStudent(updateId,newStu);
    }
//业务员中的校验学号是否存在功能
    public boolean isExists(String updateId) {
        //方案一:指挥库管查询得到所有学生信息,在当前方法中自己写查找逻辑
        //方案二,指挥库管进行根据学号查找索引位置功能,根据库管返回的索引值组织当前方法逻辑
        int index = dao.getIndex(updateId);
        return index != -1;
        /*if(index == -1){
        return false;
        }else{
        return true;
        }
         */
    }
}
